﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Collections.Generic;

public partial class ChiTietTinRaoVat : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e) 
    {
       int intId = -1;

       if (Request.QueryString["id"]!=null)
       {
          intId = Int32.Parse(Request.QueryString["id"]);
       }
       else
       {
           pnlNoiDung.Visible = false;
           pnlBaoLoi.Visible = true;
           
           return;
       }
        //Tăng số lần xem khi click vào màn hình này

       LinQ_RaoVatDataContext linQ = new LinQ_RaoVatDataContext();
       var query = from TinRaoVat in linQ.TIN_RAO_VATs where TinRaoVat.MaTinRaoVat == intId && TinRaoVat.Deleted == false select TinRaoVat;
       if (query.Count() == 0)
       {

           pnlNoiDung.Visible = false;
           pnlBaoLoi.Visible = true;
       }
       else
       {
           pnlNoiDung.Visible = true;
           foreach (TIN_RAO_VAT tinraovat in query)
           {
               if (!IsPostBack)
               {
                   tinraovat.SoLanXem += 1;
               }
              
           }
           linQ.SubmitChanges();

           //Gán giá trị các textbox ở màn hình

           foreach (TIN_RAO_VAT NoiDungTinRaoVat in query)
           {
               txtTenTinRaoVat.Text = NoiDungTinRaoVat.TenTinRaoVat;
               txtThoiGianDang.Text = NoiDungTinRaoVat.ThoiGianDang.Value.ToShortDateString();
               hplTenNguoiDung.Text = NoiDungTinRaoVat.NGUOI_DUNG.TenDangNhap;
               hplTenNguoiDung.NavigateUrl = "~/ThongTinLienHeNguoiDung.aspx?id=" + NoiDungTinRaoVat.NGUOI_DUNG.MaNguoiDung;
               txtNgayThamGia.Text = NoiDungTinRaoVat.NGUOI_DUNG.ThoiGianDangKy.Value.ToShortDateString();
               txtLoaiNguoiDung.Text = NoiDungTinRaoVat.NGUOI_DUNG.LOAI_NGUOI_DUNG.TenLoaiNguoiDung;
               ltlNoiDungBaiDang.Text = NoiDungTinRaoVat.NoiDungTinRaoVat;

               // Kiểm tra có đăng nhập hay không và tên đăng nhập có trùng với tên người đăng hay không

               string sTenDangNhap = (string)Session["TenDangNhap"];
               string sLoaiNguoiDung = (string)Session["LoaiNguoiDung"];
               if (sLoaiNguoiDung != null||sLoaiNguoiDung =="")
               {
                   var KiemTraLoaiNguoiDung = from LoaiNguoiDung in linQ.LOAI_NGUOI_DUNGs
                                              where LoaiNguoiDung.Deleted == false && LoaiNguoiDung.MaLoaiNguoiDung == int.Parse(sLoaiNguoiDung.ToString())
                                              select LoaiNguoiDung;
                   foreach (LOAI_NGUOI_DUNG lndung in KiemTraLoaiNguoiDung)
                   {
                       if (lndung.TenLoaiNguoiDung == "Admin")
                       {
                           btnChinhSuaBaiDang.Visible = true;
                       }
                       else if (sTenDangNhap != null && sTenDangNhap.Trim() == NoiDungTinRaoVat.NGUOI_DUNG.TenDangNhap.Trim())
                       {
                           btnChinhSuaBaiDang.Visible = true;
                       }
                       else
                           btnChinhSuaBaiDang.Visible = false;
                   }
               }
              
               if (sTenDangNhap != null)
               {
                   var KiemTraNguoiDung = from Nguoi_Dung in linQ.NGUOI_DUNGs where Nguoi_Dung.TenDangNhap == sTenDangNhap select Nguoi_Dung;
                   foreach (NGUOI_DUNG ndung in KiemTraNguoiDung)
                   {
                       var KiemTraBaoCaoViPham = from BaoCaoViPham in linQ.BAO_CAO_TIN_RAO_VAT_VI_PHAMs
                                                 where BaoCaoViPham.MaNguoiBaoCao == ndung.MaNguoiDung && BaoCaoViPham.MaTinViPham == intId
                                                 select BaoCaoViPham;
                       if (KiemTraBaoCaoViPham.Count() > 0)
                       {
                           btnBaoCaoViPham.Visible = false;
                       }
                       else
                       {
                           btnBaoCaoViPham.Visible = true;
                       }
                   }
                   
               }
               else
               {
                   btnBaoCaoViPham.Visible = false;
               }
           }

           if (query.First().Thumbnail != null)
           {
               imgSanPham.ImageUrl = @"~/RaoVat/ShowImage.aspx?id=" + query.First().MaTinRaoVat;
               HyperLink1.NavigateUrl = @"~/RaoVat/ShowImage.aspx?id=" + query.First().MaTinRaoVat;
           }
           else
           {
               imgSanPham.ImageUrl = @"~/Images/NotImage.jpg";
               HyperLink1.NavigateUrl = @"~/Images/NotImage.jpg"; 
           }
                    

           //show điểm bình chọn

           var DiemBinhChon = from BinhChon in linQ.BINH_CHONs where BinhChon.MaTinRaoVat == intId && BinhChon.Deleted == false select BinhChon;
           txtDiemBinhChonTB.Text = DiemBinhChon.Average(d => d.DiemBinhChon).ToString();

           //show nội dung trả lời

           var query1 = from BaiTraLoi in linQ.BAI_TRA_LOIs where BaiTraLoi.MaTinRaoVat == intId orderby BaiTraLoi.ThoiGianTraLoi descending select BaiTraLoi;
           GridView1.DataSource = query1;
           GridView1.DataBind();

           pnlBaoLoi.Visible = false;
           pnlNoiDung.Visible = true;
       }
    }
   
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        // đường dẫn đến trang thông tin liên hệ người dùng

        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            BAI_TRA_LOI objTin = (BAI_TRA_LOI)e.Row.DataItem;            
            HyperLink hplTenNguoiDung1 = (HyperLink)e.Row.FindControl("hplTenNguoiDung1");
            hplTenNguoiDung1.Text = objTin.NGUOI_DUNG.TenNguoiDung;
            hplTenNguoiDung1.NavigateUrl = "~/ThongTinLienHeNguoiDung.aspx?id=" + objTin.NGUOI_DUNG.MaNguoiDung;
        }
    }
    protected void btnTraLoi_Click(object sender, EventArgs e)
    {
        // kiểm tra tên đăng nhập và mật khẩu
        string sTenDangNhap = (string)Session["TenDangNhap"];
        string sMatKhau = (string)Session["MatKhau"];               
        if (sTenDangNhap != null || sMatKhau != null)
        {            
            // nếu có thì ẩn thông báo và hiện toolbox trả lời

            lblThongBao.Visible = false;
            CKEditor1.Visible = true;
            btnDangBaiTraLoi.Visible = true;
        }              
        else
        {
            // nếu không thì hiện thông báo và ẩn toolbox trả lời

            lblThongBao.Visible = true;
            lblThongBao.Text = "Đăng nhập để trả lời";
            CKEditor1.Visible = false;
            btnDangBaiTraLoi.Visible = false;
        }
    }
    protected void btnDangBaiTraLoi_Click(object sender, EventArgs e)
    {
        string sTenDangNhap = (string)Session["TenDangNhap"];        
        int intId = -1;

        if (Request.QueryString["id"] != null)
        {
            intId = Int32.Parse(Request.QueryString["id"]);
        }
        else
        {
            return;
        }
        LinQ_RaoVatDataContext linQ = new LinQ_RaoVatDataContext();
        var query = from Nguoi_Dung in linQ.NGUOI_DUNGs where Nguoi_Dung.TenDangNhap == sTenDangNhap select Nguoi_Dung;
        foreach (NGUOI_DUNG nd in query)
        {
            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
            string connectionString = builder.ConnectionString;
            LinQ_RaoVatDataContext demo = new LinQ_RaoVatDataContext(connectionString);

            // Gán giá trị vào bảng BAI_TRA_LOI

            BAI_TRA_LOI traloi = new BAI_TRA_LOI();
            traloi.MaNguoiDung = nd.MaNguoiDung;
            traloi.MaTinRaoVat = intId;
            traloi.NoiDungTraLoi = CKEditor1.Content;
            traloi.ThoiGianTraLoi = DateTime.Now;
            traloi.Deleted = false;
            demo.BAI_TRA_LOIs.InsertOnSubmit(traloi);
            demo.SubmitChanges();
            CKEditor1.Content = "";
            CKEditor1.Visible = false;
            btnDangBaiTraLoi.Visible = false;

            //Refresh lại Bảng trả lời

            var query1 = from BaiTraLoi in linQ.BAI_TRA_LOIs where BaiTraLoi.MaTinRaoVat == intId select BaiTraLoi;
            GridView1.DataSource = query1;
            GridView1.DataBind();
            Response.Write("<script> alert('Trả lời thành công');</script>");
        }
    }
    protected void btnChinhSuaBaiDang_Click(object sender, EventArgs e)
    {
        CKChinhSuaBaiDang.Visible = true;
        btnSuaBaiDang.Visible = true;        
        int intId = -1;
        if (Request.QueryString["id"] != null)
        {
            intId = Int32.Parse(Request.QueryString["id"]);
        }
        else
        {
            return;
        }
        LinQ_RaoVatDataContext linQ = new LinQ_RaoVatDataContext();
        var query = from TinRaoVat in linQ.TIN_RAO_VATs where TinRaoVat.MaTinRaoVat == intId && TinRaoVat.Deleted == false select TinRaoVat;
        foreach (TIN_RAO_VAT tinraovat in query)
        {
            CKChinhSuaBaiDang.Content = tinraovat.NoiDungTinRaoVat;
        }
    }    
    protected void btnSuaBaiDang_Click(object sender, EventArgs e)
    {
        int intId = -1;
        if (Request.QueryString["id"] != null)
        {
            intId = Int32.Parse(Request.QueryString["id"]);
        }
        else
        {
            return;
        }
        LinQ_RaoVatDataContext linQ = new LinQ_RaoVatDataContext();
        var query = from TinRaoVat in linQ.TIN_RAO_VATs where TinRaoVat.MaTinRaoVat == intId && TinRaoVat.Deleted == false select TinRaoVat;
        foreach (TIN_RAO_VAT tinraovat in query)
        {
            tinraovat.NoiDungTinRaoVat = CKChinhSuaBaiDang.Content;
            ltlNoiDungBaiDang.Text = tinraovat.NoiDungTinRaoVat;
        }
        linQ.SubmitChanges();
        CKChinhSuaBaiDang.Visible = false;
        btnSuaBaiDang.Visible = false;
        Response.Write("<script> alert('Bạn đã sửa bài đăng thành công');</script>");
    }
    protected void btnBinhChon_Click(object sender, EventArgs e)
    {
        string sTenDangNhap = (string)Session["TenDangNhap"];
        if (sTenDangNhap == null)
        {
            lblThongBao.Visible = true;
            lblThongBao.Text = "Đăng nhập để bình chọn";
        }        
        else
        {
            if (sTenDangNhap != null)
            {
                lblThongBao.Visible = false;
            }
            int intId = -1;

            if (Request.QueryString["id"] != null)
            {
                intId = Int32.Parse(Request.QueryString["id"]);
            }
            else
            {
                return;
            }
            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
            string connectionString = builder.ConnectionString;
            LinQ_RaoVatDataContext linQ = new LinQ_RaoVatDataContext(connectionString);
            var query = from Nguoi_Dung in linQ.NGUOI_DUNGs where Nguoi_Dung.TenDangNhap == sTenDangNhap select Nguoi_Dung;
            foreach (NGUOI_DUNG nd in query)
            {
                var CheckPrimaryKey = from BinhChon in linQ.BINH_CHONs where BinhChon.MaTinRaoVat == intId && BinhChon.MaNguoiDung == nd.MaNguoiDung select BinhChon;
                if (CheckPrimaryKey.Count() == 1)
                {
                    lblThongBao.Visible = true;
                    lblThongBao.Text = "Mỗi user chỉ được bình chọn một lần";
                }
                else
                {
                    if (RbtnBinhChon1.Checked == false && RbtnBinhChon2.Checked == false && RbtnBinhChon3.Checked == false && RbtnBinhChon4.Checked == false && RbtnBinhChon5.Checked == false)
                    {
                        return;
                    }
                    else
                    {
                        int DiemBinhChon = 0;
                        if (RbtnBinhChon1.Checked == true)
                        {
                            DiemBinhChon = 1;
                        }
                        if (RbtnBinhChon2.Checked == true)
                        {
                            DiemBinhChon = 2;
                        }
                        if (RbtnBinhChon3.Checked == true)
                        {
                            DiemBinhChon = 3;
                        }
                        if (RbtnBinhChon4.Checked == true)
                        {
                            DiemBinhChon = 4;
                        }
                        if (RbtnBinhChon5.Checked == true)
                        {
                            DiemBinhChon = 5;
                        }                        
                        BINH_CHON binhchon = new BINH_CHON();
                        binhchon.MaTinRaoVat = intId;
                        binhchon.MaNguoiDung = nd.MaNguoiDung;
                        binhchon.ThoiGianBinhChon = DateTime.Now;
                        binhchon.DiemBinhChon = DiemBinhChon;                        
                        binhchon.Deleted = false;
                        linQ.BINH_CHONs.InsertOnSubmit(binhchon);
                        linQ.SubmitChanges();
                        Response.Write("<script> alert('Bình chọn thành công');</script>");
                        var diemBinhChonTB = from BinhChon in linQ.BINH_CHONs where BinhChon.MaTinRaoVat == intId select BinhChon;
                        foreach (BINH_CHON bc in diemBinhChonTB)
                        {
                            txtDiemBinhChonTB.Text = diemBinhChonTB.Average(d => d.DiemBinhChon).ToString();
                        }                                   
                    }
                }
            }            
        }
    }
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        int intId = -1;

        if (Request.QueryString["id"] != null)
        {
            intId = Int32.Parse(Request.QueryString["id"]);
        }
        else
        {
            return;
        }

        LinQ_RaoVatDataContext linQ = new LinQ_RaoVatDataContext();
        var query1 = from BaiTraLoi in linQ.BAI_TRA_LOIs where BaiTraLoi.MaTinRaoVat == intId orderby BaiTraLoi.ThoiGianTraLoi descending select BaiTraLoi;
        GridView1.DataSource = query1;
        GridView1.DataBind();
    }
    protected void btnBaoCaoViPham_Click(object sender, EventArgs e)
    {
        int intId = -1;

        if (Request.QueryString["id"] != null)
        {
            intId = Int32.Parse(Request.QueryString["id"]);
        }
        else
        {
            return;
        }
        LinQ_RaoVatDataContext linQ = new LinQ_RaoVatDataContext();          
        string sTenDangNhap = (string)Session["TenDangNhap"];
        BAO_CAO_TIN_RAO_VAT_VI_PHAM vipham = new BAO_CAO_TIN_RAO_VAT_VI_PHAM();
        vipham.MaTinViPham = intId;
        var query1 = from Nguoi_Dung in linQ.NGUOI_DUNGs where Nguoi_Dung.TenDangNhap == sTenDangNhap select Nguoi_Dung;
        foreach (NGUOI_DUNG nd in query1)
        {
            vipham.MaNguoiBaoCao = nd.MaNguoiDung;
        }

        vipham.ThoiGianBaoCao = DateTime.Now;
        vipham.Deleted = false;
        linQ.BAO_CAO_TIN_RAO_VAT_VI_PHAMs.InsertOnSubmit(vipham);
        linQ.SubmitChanges();
        btnBaoCaoViPham.Visible = false;
        Response.Write("<script> alert('Bạn đã báo cáo bài rao vặt vi phạm');</script>");        
    }
}